package com.ylyq.ylxx.model.request;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;

/**
 * @ClassName GetGroupInfoRequest
 * @Description TODO
 * @Author xiaweichao
 * @Date 2020/6/24 17:19
 * @Version 1.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "获取广告组信息含数据报告的请求参数")
public class GetGroupInfoRequest {
    @ApiModelProperty(value = "广告主ID",required = true)
    @NotNull(message = "广告主ID不能为空")
    private Long advertiser_id;

    @ApiModelProperty(value = "页数")
    private Integer page;

    @ApiModelProperty(value = "页面大小")
    private Integer page_size;
    @ApiModelProperty(value = "查询字段集合, 如果指定, 则返回结果数组中, 每个元素是包含所查询字段的字典；允许值:\"id\", \"name\",\"budget\", \"budget_mode\",\"landing_type\",\"status\",\"modify_time\"")
    private String[] fields;

    @ApiModelProperty(value = "过滤条件，若此字段不传，或传空则视为无限制条件")
    private FilteringGetGroupInfoRequest filtering;
    @ApiModelProperty(value = "统计数据过滤条件，用于在获取广告组信息及统计数据，如果不是获取统计数据，就不用传")
    private ReportFiltering reportFiltering;

    @NoArgsConstructor
    @Data
    @ApiModel(value = "获取广告组信息含数据报告的请求参数-统计数据过滤")
    public static class ReportFiltering {
        @ApiModelProperty(value = "起始日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期",required = true)
        @NotNull(message = "起始日期不能为空")
        private String start_date;
        @ApiModelProperty(value = "结束日期,格式YYYY-MM-DD,只支持查询2016-10-26及以后的日期\n" +
                "- 对于搜索词报表，只支持查看最近 30 天的数据;\n" +
                "- 对于关键词报表，只支持查看 2019-05-19 之后的数据",required = true)
        @NotNull(message = "结束日期不能为空")
        private String end_date;

    }
    @NoArgsConstructor
    @Data
    @ApiModel(value = "获取广告组信息含数据报告的请求参数-过滤条件")
    public static class FilteringGetGroupInfoRequest {

        /**
         * advertiser_id : 12312321
         * advertiser_name : test_developer
         * advertiser_role : 1
         * is_valid : true
         */
        @ApiModelProperty(value = "【过滤条件】广告组ID过滤，数组")
        private Long[] ids;
        @ApiModelProperty(value = "【过滤条件】广告组name过滤")
        private String campaign_name;
        @ApiModelProperty(value = "【过滤条件】广告组推广目的过滤.LINK\t销售线索收集\tAPP\t应用推广\tDPA\t产品目录推广\tGOODS\t商品推广（鲁班）\tSTORE\t门店推广\tAWEME\t抖音号推广\tSHOP\t电商店铺推广")
        private String landing_type;
        @ApiModelProperty(value = "【过滤条件】广告组状态过滤，默认为返回“所有不包含已删除”，如果要返回所有包含已删除有对应枚举表示.CAMPAIGN_STATUS_ENABLE\t启用\tCAMPAIGN_STATUS_DISABLE\t暂停\tCAMPAIGN_STATUS_DELETE\t删除\tCAMPAIGN_STATUS_ALL\t所有包含已删除\tCAMPAIGN_STATUS_NOT_DELETE\t所有不包含已删除（状态过滤默认值）\tCAMPAIGN_STATUS_ADVERTISER_BUDGET_EXCEED\t超出广告主日预算")
        private String status;
        @ApiModelProperty(value = "广告组创建时间，格式yyyy-mm-dd，表示过滤出当天创建的广告组")
        private String campaign_create_time;
    }

}
